package com.plian.system.entity.pf;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.plian.Tools.DateUtil;
import com.plian.system.mybatis.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description: TODO
 * @Author: Take-off
 * @Date: 2023/3/27 9:37 AM
 * @Param
 * @return
 * @Version: 1.0
 **/
@Data
@TableName("pf_leader_ship_pay_record_detail")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "LeadershipPayRecordDetail 对象", description = "领导薪酬发放备案详情")
public class LeadershipPayRecordDetail extends BaseEntity {

    @ApiModelProperty(value = "父类Id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long baseId;

    @ApiModelProperty(value = "序号")
    private String serialNumber;

    @ApiModelProperty(value = "员工Id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long staffId;

    @ApiModelProperty(value = "第三方员工Id")
    @TableField(exist = false)
    private String staffDataId;

    @ApiModelProperty(value = "员工姓名")
    private String staffName;

    @ApiModelProperty(value = "员工职务")
    private String staffPosition;

    @ApiModelProperty(value = "起任时间")
    @DateTimeFormat(pattern = DateUtil.PATTERN_MONTH)
    @JsonFormat(pattern = DateUtil.PATTERN_MONTH)
    private Date commencement;

    @ApiModelProperty(value = "本任期任职时间-开始")
    @DateTimeFormat(pattern = DateUtil.PATTERN_MONTH)
    @JsonFormat(pattern = DateUtil.PATTERN_MONTH)
    private Date durationStart;

    @ApiModelProperty(value = "本任期任职时间-结束")
    @DateTimeFormat(pattern = DateUtil.PATTERN_MONTH)
    @JsonFormat(pattern = DateUtil.PATTERN_MONTH)
    private Date durationEnd;

    @ApiModelProperty(value = "企业年度薪酬标准")
    private BigDecimal corporatePayScale;

    @ApiModelProperty(value = "年度薪酬分配系数")
    private BigDecimal annualPayCoefficient;

    @ApiModelProperty(value = "年度时间系数")
    private BigDecimal annualTimeCoefficient;

    @ApiModelProperty(value = "个人考核优秀奖励")
    private BigDecimal excellentAward;

    @ApiModelProperty(value = "个人年度薪酬标准")
    private BigDecimal annualPayScale;

    @ApiModelProperty(value = "发放情况-小计")
    private BigDecimal distributionSubtotal;

    @ApiModelProperty(value = "去年年度预发数")
    private BigDecimal lastAnnualAdvance;

    @ApiModelProperty(value = "年度清算发放数")
    private BigDecimal annualLiquidation;

    @ApiModelProperty(value = "去年-今年 发放比例")
    private BigDecimal lastDistributionRatio;

    @ApiModelProperty(value = "企业任期激励标准")
    private BigDecimal tenureIncentive;

    @ApiModelProperty(value = "任期激励分配系数")
    private BigDecimal termIncentiveCoefficient;

    @ApiModelProperty(value = "任期时间系数")
    private BigDecimal termTimeCoefficient;

    @ApiModelProperty(value = "个人任期激励标准")
    private BigDecimal termIncentiveStandard;

    @ApiModelProperty(value = "今年年度清算发放")
    private BigDecimal annualRelease;

    @ApiModelProperty(value = "以后年度发放")
    private BigDecimal afterAnnualRelease;

    @ApiModelProperty(value = "发放的以前年度未发放余额")
    private BigDecimal releaseBalance;

    @ApiModelProperty(value = "今年发放比例")
    private BigDecimal distributionRatio;

    @ApiModelProperty(value = "年度是否有发放其他货币性收入")
    private String otherIncome;

    @ApiModelProperty(value = "本任期任职时间")
    @TableField(exist = false)
    private String duration;

    @ApiModelProperty(value = "起任时间（导出用）")
    @TableField(exist = false)
    private String commencementStr;

}
